/*
 * To change this template, choose Tools | Templates
 * and open the template in the editop.
 */
package sv.com.intesal.seguridad.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.conexion.cConexion;
import sv.com.intesal.seguridad.bean.Perfil;
import sv.com.intesal.seguridad.sql.SQLPerfil;

/**
 *
 * @author ejerez
 */
public class PerfilControlador {

    public List<Perfil> fillGrid() throws Exception {
        List<Perfil> lista = new ArrayList<Perfil>();

        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLPerfil.getPerfiles).executeQuery();
            while (rs.next()) {
                Perfil p = new Perfil();
                p.setCodigo_p(rs.getInt("codigo_p"));
                p.setNombre_p(rs.getString("nombre_p"));
                p.setEstado_p(rs.getString("estado_p"));

                p.setCodigo_s(rs.getInt("codigo_s"));
                p.setNombre_s(rs.getString("nombre_s"));
                if (rs.getString("estado_p").equals("A")) {
                    p.setFiltro_estado_p(false);
                } else {
                    p.setFiltro_estado_p(true);
                }
                lista.add(p);
            }

            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<Perfil> getComboBox() throws Exception {
        try {
            return this.fillGrid();
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void setMantenimiento(Perfil p) throws Exception {
        Connection cnn = null;
        PreparedStatement ps = null;
        try {
            cnn = cConexion.conectar();

            if (p.getCodigo_p() == null) {
                ps = cnn.prepareStatement(SQLPerfil.insertPerfil);
            } else {
                ps = cnn.prepareStatement(SQLPerfil.updatePerfil);
                ps.setInt(4, p.getCodigo_p());
            }

            ps.setInt(1, p.getCodigo_s());
            ps.setString(2, p.getNombre_p());
            if (p.getFiltro_estado_p() == false) {
                ps.setString(3, "A"); //Activo
            } else {
                ps.setString(3, "I"); //Inactivo
            }
            ps.executeUpdate();

            ps.close();
            cnn.close();


            PerfilUsuarioControlador pc = new PerfilUsuarioControlador();
            pc.insert_Perfil_Formulario_PerfilUsuario();

            Mensaje m = new Mensaje();
            if (p.getCodigo_p() == null) {
                m.messageInfo(m.getIinformation());
            } else {
                m.messageInfo(m.getImodificada());
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public Integer getMax() throws Exception {
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLPerfil.getMax).executeQuery();
            rs.next();
            return rs.getInt("max");
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    /**
     * OBTENER LOS PERFILES POR SUCURSAL.
     * @return ResultSet
     * @exception Exception
     */
    public ResultSet getPerfiles_x_Sucursal() throws Exception {
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLPerfil.getPerfiles).executeQuery();
            return rs;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}